/**
 * nanoid的非安全版本polyfill
 * 用于解决在小程序环境中crypto不可用的问题
 */

// 默认字母表，与nanoid兼容
const urlAlphabet = 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict';

/**
 * 创建自定义字母表的ID生成器
 * @param alphabet 用于生成ID的字母表
 * @param defaultSize 默认ID长度
 * @returns 一个生成随机ID的函数
 */
export const customAlphabet = (alphabet: string, defaultSize = 21) => {
  return (size = defaultSize) => {
    let id = '';
    let i = size | 0;
    while (i--) {
      id += alphabet[(Math.random() * alphabet.length) | 0];
    }
    return id;
  };
};

/**
 * 生成安全、URL友好的唯一ID
 * 这是一个非安全版本，适用于小程序环境
 * @param size ID长度，默认为21
 * @returns 随机生成的ID字符串
 */
export const nanoid = (size = 21) => {
  let id = '';
  let i = size | 0;
  while (i--) {
    id += urlAlphabet[(Math.random() * 64) | 0];
  }
  return id;
};

export default nanoid; 